home *** CD-ROM | disk | FTP | other *** search
/ Nejlepší hry / Nejlepsi hry.iso / hry / plane arcade / planearcade.exe / tank3.bmp / zaloha / model.h < prev    next >
C/C++ Source or Header  |  2004-09-19  |  5KB  |  204 lines

  1.  
  2. #ifndef _MODEL_H_
  3. #define _MODEL_H_
  4.  
  5.  
  6. //struktury modelov
  7. #include "md2.h"
  8. #include "shd.h"
  9.  
  10.  
  11. //-----------------------------------
  12. //FACE 
  13. //----------------------------------
  14. struct MODELFACE
  15. {
  16.     VECTOR3D P[3];  //vertexi
  17.     VECTOR2D T[3];  //texture kordinaty
  18.     VECTOR3D N[3];  //normaly
  19.  
  20.     PLANE Plane;   //rovina
  21.  
  22. };
  23.  
  24. //----------------------------------
  25. //MODEL
  26. //----------------------------------
  27. struct MODELFRAME
  28. {
  29.     //Face
  30.     int NumFaces;
  31.     int ActFace;
  32.     MODELFACE *FaceList;
  33.     
  34.     VECTOR3D Min,Max; //minimalne - maximalne hodnoty
  35.     VECTOR3D P[8];    //body obaloveho kvadra
  36.     VECTOR3D Centre;  //stred
  37.     VECTOR3D ZeroPoint; //transformovany bod 0,0,0
  38.     float    Polomer; //polomer 
  39. };
  40.  
  41. //-----------------------------------
  42. //CUSTOMVERTEX
  43. //---------------------------------------
  44. struct CUSTOMVERTEXMODEL
  45. {
  46.     D3DXVECTOR3 pos; //Position
  47.     D3DXVECTOR3 normal; //normal
  48.     D3DCOLOR    color;  
  49.     FLOAT       tu, tv;  
  50.     
  51. };
  52.  
  53. //CUSTOMVERTEXT
  54. #define D3DFVF_CUSTOMVERTEXMODEL (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1)
  55.  
  56. //------------------------------------------------------------------
  57. // Name: MODEL class
  58. // Desc: ***********
  59. //------------------------------------------------------------------
  60. class MODEL
  61. {
  62. private:
  63.     
  64.     //vertex buffer
  65.     LPDIRECT3DVERTEXBUFFER9 g_pVB ; 
  66.  
  67.     //textura
  68.     LPDIRECT3DTEXTURE9    g_pTexture; 
  69.     LPDIRECT3DTEXTURE9    g_pEnviroMap; 
  70.  
  71.     //material
  72.     D3DMATERIAL9 Material;
  73.  
  74.     
  75.     ///////////
  76.     //FUNKCIE// 
  77.     ///////////
  78.  
  79.     //zinicializuje vsetko - VB, modely
  80.     void SetNums(int NFrames, int NFaces);
  81.  
  82.     
  83.     ///////////////////////////////////////
  84.     //POMOCNE FUNCKIE PRE PRACU S MODELOM//
  85.     ///////////////////////////////////////
  86.  
  87.     void CalcBoxPoints(MODELFRAME *Mod);
  88.  
  89.     //vypocita minimum a maximum a stred
  90.     void CalcMinMax(MODELFRAME *Mod,D3DXMATRIXA16 Matica);
  91.  
  92.     //vypocita Face Normaly, vypocita stred, zeropoint, MinMax
  93.     void CalcFaceNormals(MODELFRAME *Mod);
  94.  
  95.     //vypocitaj smooth shading
  96.     void CalcSmoothShading(MODELFRAME *Mod);
  97.  
  98.     //interpolacia
  99.     void InterpolateModel(MODELFRAME *Mod);
  100.  
  101.     //transformacia - vypocita min max
  102.     void TransformModel(MODELFRAME *Mod,D3DXMATRIXA16 Matica);
  103.  
  104.     //renderuje model
  105.     void RenderModelNormal(MODELFRAME Mod);
  106.     void RenderModelMultiTexture(MODELFRAME Mod);
  107.     void RenderModelEnvironment(MODELFRAME Mod);
  108.     void RenderModelBumpMap(MODELFRAME Mod);
  109.     void RenderModelOnlyShadow(MODELFRAME Mod);
  110.  
  111.     //inicializacia
  112.     void InitializeModel(MODELFRAME *Mod,int NFaces);
  113.  
  114.     //znicenie
  115.     void DestroyModel(MODELFRAME *Mod);
  116.  
  117.  
  118.     //////////////////////
  119.     //FUNKCIE - LOAD ASE//
  120.     //////////////////////
  121.     int GetNumFace(char *FileName);
  122.     void AddNode(MODELFRAME *Mod,FILE *fp);
  123.      
  124.  
  125. public:
  126.  
  127.     MODEL();
  128.     ~MODEL();
  129.     
  130.     MODELFRAME ModelFrame; //zasobnik modelu
  131.  
  132.     //////////////
  133.     //VLASTNOSTI//
  134.     //////////////
  135.  
  136.     D3DXMATRIXA16 Matica; //matica
  137.     
  138.     VECTOR3D Pos;        //pozicia
  139.      VECTOR3D Rot;        //rotacia - yaw pitch roll
  140.     VECTOR3D Sca;        //velkos¥
  141.     COLOR Color;         //color
  142.  
  143.     bool Lighting;       //osvetlit model?
  144.     bool Specular ;      //zapinat specular shading
  145.     bool Textured;       //textura?
  146.     bool FrustrumTest;  //test frustrum cullingu
  147.     bool SmoothShading;  //ci ma pocitat smooth shading
  148.     bool Normals;        //ci ma pocitat normaly
  149.     bool BumpMap;        //bumpmapping
  150.     bool EnviromentMapping; //enviro mapping
  151.     bool MultiTexture; //enviro + normal 
  152.     bool OnlyShadow;  //render iba pre tiene
  153.  
  154.     float Frame;         //frame - animacia
  155.     
  156.     int NumFaces;   //pocet trojholnikov v jednom modely
  157.     int NumFrames;  //pocet frejmov
  158.  
  159.     //////////////////////
  160.     //FUNKCIE - LOAD ASE//
  161.     //////////////////////
  162.  
  163.     void InitializeAse(int NFrames,char *FileName);
  164.     void LoadAse(int IntoFrame,char *FileName);
  165.  
  166.     //////////////////////
  167.     //FUNKCIE - MD2     //
  168.     //////////////////////
  169.     void LoadMD2(char *FileName,int NFrames);
  170.  
  171.     //////////////////////
  172.     //FUNKCIE - SHD     //
  173.     //////////////////////
  174.     void LoadSHD(char *FileName);
  175.     void SaveSHD(char *FileName);
  176.  
  177.     ///////////////////////
  178.     //FUNKCIE - UNIVERZAL//
  179.     ///////////////////////
  180.     void LoadTexture(char *FileName,COLOR ColorKey);
  181.     void LoadEnviroMap(char *FileName);
  182.  
  183.     void SetMaterial(D3DMATERIAL9 Mat);
  184.  
  185.     void BuildShadow(STENCIL *Stn);
  186.  
  187.     void Render();
  188.     void RenderFast();
  189.  
  190.     //////////////////////
  191.     //FUNKCIE - KOLIZIA/ /
  192.     //////////////////////
  193.     
  194.     //vlastnosti kolizie
  195.     VECTOR3D ColPosition; //pozicia v ktorej doslo ku kolizii
  196.     VECTOR3D ColNormal; //normala facu ktory bol v kolizii
  197.  
  198.     bool CollisionDetail(VECTOR3D P1, VECTOR3D P2,D3DXMATRIX PomMatrix);
  199.     bool CollisionBox(VECTOR3D P1, VECTOR3D P2,D3DXMATRIX PomMatrix);
  200.     
  201.  
  202. };
  203.  
  204. #endif //_MODEL_H_